import markdown
from markdown.extensions.tables import TableExtension
from markdown.extensions.fenced_code import FencedCodeExtension
from markdown.extensions.codehilite import CodeHiliteExtension
from markdown.extensions.toc import TocExtension
from markdown.extensions.admonition import AdmonitionExtension
import re


def markdown_to_html(md_text):
    # 预处理流程图等特殊语法（这里以mermaid为例）
    # 将 ```mermaid 代码块转换为 <div class="mermaid"> 标签
    md_text = re.sub(
        r'```mermaid\n(.*?)\n```',
        r'<div class="mermaid">\n\1\n</div>',
        md_text,
        flags=re.DOTALL
    )

    # 配置Markdown扩展
    extensions = [
        TableExtension(),        # 表格支持
        FencedCodeExtension(),  # 代码块支持
        CodeHiliteExtension(),  # 语法高亮
        TocExtension(),         # 目录生成
        AdmonitionExtension(),  # 警告框支持
        'mdx_math',            # 数学公式支持(需要安装python-markdown-math)
        'pymdownx.extra',      # 额外扩展(需要安装pymdown-extensions)
        'pymdownx.superfences'  # 更好的代码块支持
    ]

    # 转换Markdown到HTML
    html = markdown.markdown(md_text, extensions=extensions)

    return "<!doctypehtml><title>PRD文档</title><style>body{font-family:Arial,sans-serif;line-height:1.6;max-width:800px;margin:0 auto;padding:20px}h1{color:#333;border-bottom:1px solid #eee;padding-bottom:10px}h2{color:#444;margin-top:30px}h3{color:#555}table{width:100%;border-collapse:collapse;margin:20px 0}table,td,th{border:1px solid #ddd}td,th{padding:10px;text-align:left}th{background-color:#f5f5f5}pre{background-color:#f8f8f8;padding:15px;border-radius:4px;overflow-x:auto}.mermaid{background-color:#fff;padding:15px;border-radius:4px;margin:20px 0;text-align:center}</style><body>"+html+"<script src=https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js></script><script>mermaid.initialize({startOnLoad:!0})</script>"


md_text = """
# 项目文档

## 1. 项目概述

本项目是一个示例文档，展示Markdown的多级标题、段落、流程图和表格功能。

## 2. 系统架构

### 2.1 整体架构

```mermaid
graph TD
    A[客户端] --> B(API网关)
    B --> C[用户服务]
    B --> D[订单服务]
    B --> E[支付服务]
    C --> F[(用户数据库)]
    D --> G[(订单数据库)]
    E --> H[(支付数据库)]
```

### 2.2 数据流图

```mermaid
flowchart LR
    用户注册 -->|提交信息| 用户服务
    用户服务 -->|存储数据| 数据库
    用户登录 -->|验证信息| 用户服务
    用户服务 -->|查询数据| 数据库
```

## 3. 功能模块

### 3.1 用户管理

| 功能     | 描述               | 状态     |
| -------- | ------------------ | -------- |
| 用户注册 | 新用户注册功能     | ✅ 完成   |
| 用户登录 | 用户登录认证功能   | ✅ 完成   |
| 密码重置 | 用户密码找回与重置 | 🚧 开发中 |

### 3.2 订单管理

| 订单状态 | 描述               | 数量 |
| -------- | ------------------ | ---- |
| 待支付   | 已创建未支付的订单 | 125  |
| 已支付   | 已完成支付的订单   | 342  |
| 已完成   | 已完成的订单       | 278  |

## 4. 开发进度

### 4.1 里程碑计划

```mermaid
gantt
    title 项目开发甘特图
    dateFormat  YYYY-MM-DD
    section 核心功能
    用户模块       :done,    des1, 2023-01-01, 30d
    订单模块       :active,  des2, 2023-02-01, 30d
    支付模块       :         des3, 2023-03-01, 30d
```

### 4.2 团队分工

| 成员 | 职责       | 负责模块   |
| ---- | ---------- | ---------- |
| 张三 | 后端开发   | 用户服务   |
| 李四 | 前端开发   | 用户界面   |
| 王五 | 测试工程师 | 全模块测试 |

## 5. 总结

本文档展示了Markdown的多种功能：

1. 多级标题结构
2. 段落文本
3. 流程图和图表
4. 表格展示

可以通过复制这段代码到任何支持Markdown的编辑器(如Typora、VS Code等)查看渲染效果。
"""

if __name__ == "__main__":
    try:
        html = markdown_to_html(md_text)
        # Save to HTML file
        with open("output.html", "w", encoding="utf-8") as f:
            f.write(html)
        print("HTML文件已保存为 output.html")
    except ModuleNotFoundError as e:
        print(f"错误: {e}")
        print("请确保已安装所有必需的扩展模块:")
        print("pip install python-markdown-math pymdown-extensions")
